A database is an organized collection of data. The data is typically organized to model relevant aspects of reality in a way that supports processes requiring this information. A database model is a type of data model that determines the logical structure of a database and fundamentally determines in which manner data can be stored, organized, and manipulated. The most popular example of a database model is the relational model, which uses a table-based format. Other data models for databases include the Hierarchical database model, the Network model, the Object model, the Document model, and the Entity-relationship model.
For the past few decades, relational databases have been dominant for all large-scale data processing applications and remain dominant except in niche areas. The dominant database language is the standard SQL for the relational model, which has influenced database languages for other data models.
In recent years, NoSQL (“Not only SQL”) databases have gained popularity as highly available, scalable solutions to process massive amounts of data produced and consumed under an unreliable environment. A NoSQL database provides a mechanism for storage and retrieval of data that use looser consistency models than traditional relational databases in order to achieve horizontal scaling and higher availability. For example, NoSQL databases do not require fixed table schemas. NoSQL databases are mainly designed for processing “big data” over distributed nodes in a cluster as an alternative to using a single, highly available, and high-end server system. Big data is a collection of data sets so large and complex that it becomes difficult to process using on-hand database management tools or traditional data processing applications.
NoSQL database management systems are useful when working with a huge quantity of data when the data's nature does not require a relational model. The data can be structured, but NoSQL is used when what really matters is the ability to store and retrieve great quantities of data rather than the relationships between data elements. This organization is particularly useful for statistical or real-time analysis of growing lists of elements (such as Twitter posts or the Internet server logs from a large group of users).
A NoSQL database may distribute data loading and querying over multiple storage nodes of a cluster. Each storage node maintains a local index, lexically ordered by the key, which is a variable length character string. The value part of a key-value pair may be a character string, an integer, or some other primitive data type. A NoSQL database can be used to efficiently find all key-value pairs given a specific key.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.